#pragma once
/*
    #version:1# (machine generated, don't edit!)

    Generated by sokol-shdc (https://github.com/floooh/sokol-tools)

    Cmdline:
        sokol-shdc -i shaders/main.glsl -o src/frontend/pacman_sapp.h -b -l glsl410:hlsl4

    Overview:
    =========
    Shader program: 'display':
        Get shader desc: display_shader_desc(sg_query_backend());
        Vertex shader: display_vs
            Attributes:
                ATTR_display_vs_v_pos => 0
                ATTR_display_vs_v_uv => 1
            Uniform block 'vs_params':
                C struct: vs_params_t
                Bind slot: SLOT_vs_params => 0
        Fragment shader: display_fs
            Uniform block 'screen_size':
                C struct: screen_size_t
                Bind slot: SLOT_screen_size => 0
            Image 'uTexture':
                Image type: SG_IMAGETYPE_2D
                Sample type: SG_IMAGESAMPLETYPE_FLOAT
                Multisampled: false
                Bind slot: SLOT_uTexture => 0
            Sampler 'uTextureS':
                Type: SG_SAMPLERTYPE_FILTERING
                Bind slot: SLOT_uTextureS => 0
            Image Sampler Pair 'uTexture_uTextureS':
                Image: uTexture
                Sampler: uTextureS
    Shader program: 'palette':
        Get shader desc: palette_shader_desc(sg_query_backend());
        Vertex shader: palette_vs
            Attributes:
                ATTR_palette_vs_v_pos => 0
                ATTR_palette_vs_v_uv => 1
                ATTR_palette_vs_v_palette => 2
            Uniform block 'vs_params':
                C struct: vs_params_t
                Bind slot: SLOT_vs_params => 0
        Fragment shader: palette_fs
            Image 'uTexture':
                Image type: SG_IMAGETYPE_2D
                Sample type: SG_IMAGESAMPLETYPE_FLOAT
                Multisampled: false
                Bind slot: SLOT_uTexture => 0
            Image 'uPalette':
                Image type: SG_IMAGETYPE_2D
                Sample type: SG_IMAGESAMPLETYPE_FLOAT
                Multisampled: false
                Bind slot: SLOT_uPalette => 1
            Sampler 'uTextureS':
                Type: SG_SAMPLERTYPE_FILTERING
                Bind slot: SLOT_uTextureS => 0
            Sampler 'uPaletteS':
                Type: SG_SAMPLERTYPE_FILTERING
                Bind slot: SLOT_uPaletteS => 1
            Image Sampler Pair 'uTexture_uTextureS':
                Image: uTexture
                Sampler: uTextureS
            Image Sampler Pair 'uPalette_uPaletteS':
                Image: uPalette
                Sampler: uPaletteS
*/
#if !defined(SOKOL_GFX_INCLUDED)
#error "Please include sokol_gfx.h before pacman_sapp.h"
#endif
#if !defined(SOKOL_SHDC_ALIGN)
#if defined(_MSC_VER)
#define SOKOL_SHDC_ALIGN(a) __declspec(align(a))
#else
#define SOKOL_SHDC_ALIGN(a) __attribute__((aligned(a)))
#endif
#endif
#define ATTR_display_vs_v_pos (0)
#define ATTR_display_vs_v_uv (1)
#define ATTR_palette_vs_v_pos (0)
#define ATTR_palette_vs_v_uv (1)
#define ATTR_palette_vs_v_palette (2)
#define SLOT_vs_params (0)
#define SLOT_screen_size (0)
#define SLOT_uTexture (0)
#define SLOT_uPalette (1)
#define SLOT_uTextureS (0)
#define SLOT_uPaletteS (1)
#pragma pack(push,1)
SOKOL_SHDC_ALIGN(16) typedef struct vs_params_t {
    float mvp[16];
} vs_params_t;
#pragma pack(pop)
#pragma pack(push,1)
SOKOL_SHDC_ALIGN(16) typedef struct screen_size_t {
    int uScreenWidth;
    int uScreenHeight;
    uint8_t _pad_8[8];
} screen_size_t;
#pragma pack(pop)
/*
    #version 410

    uniform vec4 vs_params[4];
    layout(location = 0) out vec2 texcoord;
    layout(location = 1) in vec2 v_uv;
    layout(location = 0) in vec2 v_pos;

    void main()
    {
        texcoord = v_uv;
        gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(v_pos, 0.0, 1.0);
    }

*/
static const uint8_t display_vs_source_glsl410[296] = {
    0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
    0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
    0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
    0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,
    0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,
    0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
    0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x76,0x5f,
    0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,
    0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,
    0x20,0x76,0x5f,0x70,0x6f,0x73,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,
    0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f,
    0x6f,0x72,0x64,0x20,0x3d,0x20,0x76,0x5f,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,
    0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,
    0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,
    0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,
    0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,
    0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,
    0x34,0x28,0x76,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,
    0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
/*
    #version 410

    uniform ivec4 screen_size[1];
    uniform sampler2D uTexture_uTextureS;

    layout(location = 0) in vec2 texcoord;
    layout(location = 0) out vec4 FragColor;

    void main()
    {
        float _29 = float(screen_size[0].x);
        vec2 _50 = vec2(0.800000011920928955078125 / _29, 0.0);
        FragColor = vec4(vec3(0.0199999995529651641845703125, 0.0199999995529651641845703125, 0.02999999932944774627685546875) + ((((vec3(texture(uTexture_uTextureS, texcoord + _50).x, texture(uTexture_uTextureS, texcoord).y, texture(uTexture_uTextureS, texcoord - _50).z) * 0.300000011920928955078125) + (texture(uTexture_uTextureS, texcoord).xyz * 0.60000002384185791015625)) * 1.39999997615814208984375) * max(0.60000002384185791015625, fma(sin((texcoord.x * 6.283185482025146484375) * _29), 0.20000000298023223876953125, 0.800000011920928955078125))), 1.0);
    }

*/
static const uint8_t display_fs_source_glsl410[841] = {
    0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
    0x69,0x66,0x6f,0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x73,0x63,0x72,0x65,
    0x65,0x6e,0x5f,0x73,0x69,0x7a,0x65,0x5b,0x31,0x5d,0x3b,0x0a,0x75,0x6e,0x69,0x66,
    0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x75,0x54,
    0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x53,
    0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
    0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,
    0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
    0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,
    0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x46,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,
    0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,
    0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x39,0x20,
    0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x73,
    0x69,0x7a,0x65,0x5b,0x30,0x5d,0x2e,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,
    0x65,0x63,0x32,0x20,0x5f,0x35,0x30,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,
    0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,
    0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2f,0x20,0x5f,0x32,0x39,0x2c,
    0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x46,0x72,0x61,0x67,0x43,
    0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x65,0x63,0x33,
    0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,
    0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x2c,
    0x20,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,
    0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x2c,
    0x20,0x30,0x2e,0x30,0x32,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x33,0x32,0x39,0x34,
    0x34,0x37,0x37,0x34,0x36,0x32,0x37,0x36,0x38,0x35,0x35,0x34,0x36,0x38,0x37,0x35,
    0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x74,0x65,0x78,
    0x74,0x75,0x72,0x65,0x28,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,
    0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,
    0x64,0x20,0x2b,0x20,0x5f,0x35,0x30,0x29,0x2e,0x78,0x2c,0x20,0x74,0x65,0x78,0x74,
    0x75,0x72,0x65,0x28,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,
    0x78,0x74,0x75,0x72,0x65,0x53,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,
    0x29,0x2e,0x79,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x75,0x54,0x65,
    0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x2c,
    0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x2d,0x20,0x5f,0x35,0x30,0x29,
    0x2e,0x7a,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
    0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,
    0x29,0x20,0x2b,0x20,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x75,0x54,0x65,
    0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x2c,
    0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2a,
    0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,
    0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x31,
    0x2e,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,
    0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,
    0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,
    0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x66,0x6d,0x61,0x28,0x73,
    0x69,0x6e,0x28,0x28,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2a,
    0x20,0x36,0x2e,0x32,0x38,0x33,0x31,0x38,0x35,0x34,0x38,0x32,0x30,0x32,0x35,0x31,
    0x34,0x36,0x34,0x38,0x34,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32,0x39,0x29,
    0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,
    0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,
    0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,
    0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x29,0x29,0x2c,0x20,0x31,
    0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
/*
    #version 410

    uniform vec4 vs_params[4];
    layout(location = 0) out vec2 texcoord;
    layout(location = 1) in vec2 v_uv;
    layout(location = 1) flat out int palette_index;
    layout(location = 2) in float v_palette;
    layout(location = 0) in vec2 v_pos;

    void main()
    {
        texcoord = v_uv;
        palette_index = int(v_palette);
        gl_Position = mat4(vs_params[0], vs_params[1], vs_params[2], vs_params[3]) * vec4(v_pos, 0.0, 1.0);
    }

*/
static const uint8_t palette_vs_source_glsl410[422] = {
    0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
    0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
    0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
    0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,
    0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x3b,
    0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
    0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x76,0x5f,
    0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,
    0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x6f,0x75,
    0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x6c,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,
    0x64,0x65,0x78,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,
    0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x66,0x6c,0x6f,
    0x61,0x74,0x20,0x76,0x5f,0x70,0x61,0x6c,0x65,0x74,0x74,0x65,0x3b,0x0a,0x6c,0x61,
    0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
    0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x76,0x5f,0x70,0x6f,0x73,
    0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,
    0x0a,0x20,0x20,0x20,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,
    0x76,0x5f,0x75,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x6c,0x65,0x74,0x74,
    0x65,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x76,0x5f,
    0x70,0x61,0x6c,0x65,0x74,0x74,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,
    0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,
    0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,
    0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,
    0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,
    0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,
    0x76,0x5f,0x70,0x6f,0x73,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,
    0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
/*
    #version 410

    uniform sampler2D uTexture_uTextureS;
    uniform sampler2D uPalette_uPaletteS;

    layout(location = 0) in vec2 texcoord;
    layout(location = 0) out vec4 FragColor;
    layout(location = 1) flat in int palette_index;

    void main()
    {
        FragColor = texture(uPalette_uPaletteS, vec2(texture(uTexture_uTextureS, texcoord).x * 63.75, float(palette_index) * 0.015625));
    }

*/
static const uint8_t palette_fs_source_glsl410[371] = {
    0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
    0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,
    0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,0x78,0x74,0x75,0x72,
    0x65,0x53,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,
    0x6c,0x65,0x72,0x32,0x44,0x20,0x75,0x50,0x61,0x6c,0x65,0x74,0x74,0x65,0x5f,0x75,
    0x50,0x61,0x6c,0x65,0x74,0x74,0x65,0x53,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,
    0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,
    0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,
    0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
    0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,
    0x46,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,
    0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,
    0x66,0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x6c,0x65,
    0x74,0x74,0x65,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,
    0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x46,0x72,
    0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,
    0x65,0x28,0x75,0x50,0x61,0x6c,0x65,0x74,0x74,0x65,0x5f,0x75,0x50,0x61,0x6c,0x65,
    0x74,0x74,0x65,0x53,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x74,0x65,0x78,0x74,0x75,
    0x72,0x65,0x28,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x75,0x54,0x65,0x78,
    0x74,0x75,0x72,0x65,0x53,0x2c,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x29,
    0x2e,0x78,0x20,0x2a,0x20,0x36,0x33,0x2e,0x37,0x35,0x2c,0x20,0x66,0x6c,0x6f,0x61,
    0x74,0x28,0x70,0x61,0x6c,0x65,0x74,0x74,0x65,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,
    0x20,0x2a,0x20,0x30,0x2e,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x3b,0x0a,0x7d,
    0x0a,0x0a,0x00,
};
/*
    cbuffer vs_params : register(b0)
    {
        row_major float4x4 _25_mvp : packoffset(c0);
    };


    static float4 gl_Position;
    static float2 texcoord;
    static float2 v_uv;
    static float2 v_pos;

    struct SPIRV_Cross_Input
    {
        float2 v_pos : TEXCOORD0;
        float2 v_uv : TEXCOORD1;
    };

    struct SPIRV_Cross_Output
    {
        float2 texcoord : TEXCOORD0;
        float4 gl_Position : SV_Position;
    };

    void vert_main()
    {
        texcoord = v_uv;
        gl_Position = mul(float4(v_pos, 0.0f, 1.0f), _25_mvp);
    }

    SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
    {
        v_uv = stage_input.v_uv;
        v_pos = stage_input.v_pos;
        vert_main();
        SPIRV_Cross_Output stage_output;
        stage_output.gl_Position = gl_Position;
        stage_output.texcoord = texcoord;
        return stage_output;
    }
*/
static const uint8_t display_vs_bytecode_hlsl4[752] = {
    0x44,0x58,0x42,0x43,0x59,0x8d,0x57,0xae,0x29,0x45,0x74,0x94,0xd1,0x85,0x1b,0x48,
    0x28,0x6c,0x88,0x02,0x01,0x00,0x00,0x00,0xf0,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
    0x34,0x00,0x00,0x00,0xf4,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x98,0x01,0x00,0x00,
    0x74,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xb8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,
    0x10,0x81,0x00,0x00,0x90,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
    0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
    0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x5f,0x32,0x35,0x5f,0x6d,0x76,0x70,0x00,0x02,0x00,0x03,0x00,
    0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,
    0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,
    0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,
    0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x38,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x03,0x03,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab,
    0x4f,0x53,0x47,0x4e,0x50,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
    0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
    0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,
    0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab,0x53,0x48,0x44,0x52,0xd4,0x00,0x00,0x00,
    0x40,0x00,0x01,0x00,0x35,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,
    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,
    0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
    0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x67,0x00,0x00,0x04,
    0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,
    0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
    0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,
    0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,
    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,
    0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,
    0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x05,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};
/*
    cbuffer screen_size : register(b0)
    {
        int _24_uScreenWidth : packoffset(c0);
        int _24_uScreenHeight : packoffset(c0.y);
    };

    Texture2D<float4> uTexture : register(t0);
    SamplerState uTextureS : register(s0);

    static float2 texcoord;
    static float4 FragColor;

    struct SPIRV_Cross_Input
    {
        float2 texcoord : TEXCOORD0;
    };

    struct SPIRV_Cross_Output
    {
        float4 FragColor : SV_Target0;
    };

    void frag_main()
    {
        float _29 = float(_24_uScreenWidth);
        float2 _50 = float2(0.800000011920928955078125f / _29, 0.0f);
        FragColor = float4(float3(0.0199999995529651641845703125f, 0.0199999995529651641845703125f, 0.02999999932944774627685546875f) + ((((float3(uTexture.Sample(uTextureS, texcoord + _50).x, uTexture.Sample(uTextureS, texcoord).y, uTexture.Sample(uTextureS, texcoord - _50).z) * 0.300000011920928955078125f) + (uTexture.Sample(uTextureS, texcoord).xyz * 0.60000002384185791015625f)) * 1.39999997615814208984375f) * max(0.60000002384185791015625f, mad(sin((texcoord.x * 6.283185482025146484375f) * _29), 0.20000000298023223876953125f, 0.800000011920928955078125f))), 1.0f);
    }

    SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
    {
        texcoord = stage_input.texcoord;
        frag_main();
        SPIRV_Cross_Output stage_output;
        stage_output.FragColor = FragColor;
        return stage_output;
    }
*/
static const uint8_t display_fs_bytecode_hlsl4[1280] = {
    0x44,0x58,0x42,0x43,0xea,0x1d,0xce,0x17,0x59,0x82,0x74,0xf3,0x85,0x42,0x64,0xe4,
    0xa6,0xef,0x31,0xd5,0x01,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x05,0x00,0x00,0x00,
    0x34,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xb4,0x01,0x00,0x00,0xe8,0x01,0x00,0x00,
    0x84,0x04,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
    0x9c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,
    0x10,0x81,0x00,0x00,0x1a,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x86,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x8f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,
    0x53,0x00,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x00,0x73,0x63,0x72,0x65,0x65,
    0x6e,0x5f,0x73,0x69,0x7a,0x65,0x00,0xab,0x8f,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0xb4,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0xe4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x04,0x00,0x00,0x00,
    0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x5f,0x32,0x34,0x5f,0x75,0x53,0x63,0x72,0x65,0x65,0x6e,0x57,0x69,0x64,0x74,0x68,
    0x00,0xab,0xab,0xab,0x00,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x5f,0x32,0x34,0x5f,0x75,0x53,0x63,0x72,0x65,0x65,0x6e,0x48,
    0x65,0x69,0x67,0x68,0x74,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,
    0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,
    0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00,0xab,0xab,
    0x49,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
    0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
    0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,
    0x61,0x72,0x67,0x65,0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x02,0x00,0x00,
    0x40,0x00,0x00,0x00,0xa5,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,
    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,
    0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,
    0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
    0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,
    0x03,0x00,0x00,0x00,0x2b,0x00,0x00,0x06,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x07,
    0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0xcd,0xcc,0x4c,0x3f,
    0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,
    0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x10,0x10,0x00,
    0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0xdb,0x0f,0xc9,0x40,
    0x4d,0x00,0x00,0x06,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x00,0x00,
    0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x09,0x12,0x00,0x10,0x00,
    0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,
    0xcd,0xcc,0x4c,0x3e,0x01,0x40,0x00,0x00,0xcd,0xcc,0x4c,0x3f,0x36,0x00,0x00,0x05,
    0x22,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x07,0x62,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x01,0x10,0x00,
    0x01,0x00,0x00,0x00,0x06,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
    0x32,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x00,0x10,0x80,0x41,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x09,
    0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x00,0x10,0x00,0x01,0x00,0x00,0x00,
    0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,
    0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x96,0x05,0x10,0x00,
    0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,
    0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00,
    0x0a,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,
    0x02,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,
    0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,
    0x62,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x10,0x00,0x02,0x00,0x00,0x00,
    0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x9a,0x99,0x19,0x3f,0x9a,0x99,0x19,0x3f,
    0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0c,0x52,0x00,0x10,0x00,0x02,0x00,0x00,0x00,
    0x06,0x02,0x10,0x00,0x01,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x9a,0x99,0x99,0x3e,
    0x00,0x00,0x00,0x00,0x9a,0x99,0x99,0x3e,0x00,0x00,0x00,0x00,0x56,0x06,0x10,0x00,
    0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x06,0x09,0x10,0x00,0x02,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
    0x33,0x33,0xb3,0x3f,0xae,0x47,0xa1,0x3f,0x33,0x33,0xb3,0x3f,0x32,0x00,0x00,0x0c,
    0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,
    0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x0a,0xd7,0xa3,0x3c,
    0x0a,0xd7,0xa3,0x3c,0x8f,0xc2,0xf5,0x3c,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,
    0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,
    0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x13,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};
/*
    cbuffer vs_params : register(b0)
    {
        row_major float4x4 _31_mvp : packoffset(c0);
    };


    static float4 gl_Position;
    static float2 texcoord;
    static float2 v_uv;
    static int palette_index;
    static float v_palette;
    static float2 v_pos;

    struct SPIRV_Cross_Input
    {
        float2 v_pos : TEXCOORD0;
        float2 v_uv : TEXCOORD1;
        float v_palette : TEXCOORD2;
    };

    struct SPIRV_Cross_Output
    {
        float2 texcoord : TEXCOORD0;
        nointerpolation int palette_index : TEXCOORD1;
        float4 gl_Position : SV_Position;
    };

    void vert_main()
    {
        texcoord = v_uv;
        palette_index = int(v_palette);
        gl_Position = mul(float4(v_pos, 0.0f, 1.0f), _31_mvp);
    }

    SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
    {
        v_uv = stage_input.v_uv;
        v_palette = stage_input.v_palette;
        v_pos = stage_input.v_pos;
        vert_main();
        SPIRV_Cross_Output stage_output;
        stage_output.gl_Position = gl_Position;
        stage_output.texcoord = texcoord;
        stage_output.palette_index = palette_index;
        return stage_output;
    }
*/
static const uint8_t palette_vs_bytecode_hlsl4[844] = {
    0x44,0x58,0x42,0x43,0x57,0xa0,0x08,0x74,0xb7,0xde,0x8c,0x74,0xe9,0xd0,0x79,0xd3,
    0x8c,0xec,0x84,0x16,0x01,0x00,0x00,0x00,0x4c,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
    0x34,0x00,0x00,0x00,0xf4,0x00,0x00,0x00,0x58,0x01,0x00,0x00,0xc8,0x01,0x00,0x00,
    0xd0,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xb8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,
    0x10,0x81,0x00,0x00,0x90,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
    0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
    0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x5f,0x33,0x31,0x5f,0x6d,0x76,0x70,0x00,0x02,0x00,0x03,0x00,
    0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,
    0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,
    0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,
    0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x54,0x45,0x58,0x43,
    0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,
    0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x0e,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
    0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,
    0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab,0x53,0x48,0x44,0x52,0x00,0x01,0x00,0x00,
    0x40,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,
    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,
    0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
    0x5f,0x00,0x00,0x03,0x12,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,
    0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x12,0x20,0x10,0x00,
    0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,
    0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
    0x1b,0x00,0x00,0x05,0x12,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x0a,0x10,0x10,0x00,
    0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
    0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,
    0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,
    0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/*
    Texture2D<float4> uTexture : register(t0);
    SamplerState uTextureS : register(s0);
    Texture2D<float4> uPalette : register(t1);
    SamplerState uPaletteS : register(s1);

    static float2 texcoord;
    static float4 FragColor;
    static int palette_index;

    struct SPIRV_Cross_Input
    {
        float2 texcoord : TEXCOORD0;
        nointerpolation int palette_index : TEXCOORD1;
    };

    struct SPIRV_Cross_Output
    {
        float4 FragColor : SV_Target0;
    };

    void frag_main()
    {
        FragColor = uPalette.Sample(uPaletteS, float2(uTexture.Sample(uTextureS, texcoord).x * 63.75f, float(palette_index) * 0.015625f));
    }

    SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
    {
        texcoord = stage_input.texcoord;
        palette_index = stage_input.palette_index;
        frag_main();
        SPIRV_Cross_Output stage_output;
        stage_output.FragColor = FragColor;
        return stage_output;
    }
*/
static const uint8_t palette_fs_bytecode_hlsl4[800] = {
    0x44,0x58,0x42,0x43,0x69,0x10,0x77,0x8e,0xd3,0xd6,0x6c,0x4b,0x87,0x2e,0x4f,0x5b,
    0x9e,0xa1,0x84,0xed,0x01,0x00,0x00,0x00,0x20,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
    0x34,0x00,0x00,0x00,0x28,0x01,0x00,0x00,0x74,0x01,0x00,0x00,0xa8,0x01,0x00,0x00,
    0xa4,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xec,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,
    0x10,0x81,0x00,0x00,0xc2,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xa6,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0xb9,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x75,0x54,0x65,0x78,0x74,0x75,0x72,0x65,
    0x53,0x00,0x75,0x50,0x61,0x6c,0x65,0x74,0x74,0x65,0x53,0x00,0x75,0x54,0x65,0x78,
    0x74,0x75,0x72,0x65,0x00,0x75,0x50,0x61,0x6c,0x65,0x74,0x74,0x65,0x00,0x4d,0x69,
    0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,
    0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,
    0x20,0x31,0x30,0x2e,0x31,0x00,0xab,0xab,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,
    0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,
    0x38,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
    0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,
    0x61,0x72,0x67,0x65,0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xf4,0x00,0x00,0x00,
    0x40,0x00,0x00,0x00,0x3d,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,
    0x00,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x01,0x00,0x00,0x00,
    0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,
    0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x01,0x00,0x00,0x00,0x55,0x55,0x00,0x00,
    0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x08,0x00,0x03,
    0x12,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,
    0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09,
    0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
    0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,
    0x2b,0x00,0x00,0x05,0x42,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x10,0x10,0x00,
    0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x86,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x7f,0x42,
    0x00,0x00,0x80,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x09,
    0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
    0x46,0x7e,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x01,0x00,0x00,0x00,
    0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x05,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};
static inline const sg_shader_desc* display_shader_desc(sg_backend backend) {
    if (backend == SG_BACKEND_GLCORE) {
        static sg_shader_desc desc;
        static bool valid;
        if (!valid) {
            valid = true;
            desc.attrs[0].name = "v_pos";
            desc.attrs[1].name = "v_uv";
            desc.vs.source = (const char*)display_vs_source_glsl410;
            desc.vs.entry = "main";
            desc.vs.uniform_blocks[0].size = 64;
            desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.vs.uniform_blocks[0].uniforms[0].name = "vs_params";
            desc.vs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4;
            desc.vs.uniform_blocks[0].uniforms[0].array_count = 4;
            desc.fs.source = (const char*)display_fs_source_glsl410;
            desc.fs.entry = "main";
            desc.fs.uniform_blocks[0].size = 16;
            desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.fs.uniform_blocks[0].uniforms[0].name = "screen_size";
            desc.fs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_INT4;
            desc.fs.uniform_blocks[0].uniforms[0].array_count = 1;
            desc.fs.images[0].used = true;
            desc.fs.images[0].multisampled = false;
            desc.fs.images[0].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.samplers[0].used = true;
            desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.image_sampler_pairs[0].used = true;
            desc.fs.image_sampler_pairs[0].image_slot = 0;
            desc.fs.image_sampler_pairs[0].sampler_slot = 0;
            desc.fs.image_sampler_pairs[0].glsl_name = "uTexture_uTextureS";
            desc.label = "display_shader";
        }
        return &desc;
    }
    if (backend == SG_BACKEND_D3D11) {
        static sg_shader_desc desc;
        static bool valid;
        if (!valid) {
            valid = true;
            desc.attrs[0].sem_name = "TEXCOORD";
            desc.attrs[0].sem_index = 0;
            desc.attrs[1].sem_name = "TEXCOORD";
            desc.attrs[1].sem_index = 1;
            desc.vs.bytecode.ptr = display_vs_bytecode_hlsl4;
            desc.vs.bytecode.size = 752;
            desc.vs.entry = "main";
            desc.vs.uniform_blocks[0].size = 64;
            desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.fs.bytecode.ptr = display_fs_bytecode_hlsl4;
            desc.fs.bytecode.size = 1280;
            desc.fs.entry = "main";
            desc.fs.uniform_blocks[0].size = 16;
            desc.fs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.fs.images[0].used = true;
            desc.fs.images[0].multisampled = false;
            desc.fs.images[0].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.samplers[0].used = true;
            desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.image_sampler_pairs[0].used = true;
            desc.fs.image_sampler_pairs[0].image_slot = 0;
            desc.fs.image_sampler_pairs[0].sampler_slot = 0;
            desc.label = "display_shader";
        }
        return &desc;
    }
    return 0;
}
static inline const sg_shader_desc* palette_shader_desc(sg_backend backend) {
    if (backend == SG_BACKEND_GLCORE) {
        static sg_shader_desc desc;
        static bool valid;
        if (!valid) {
            valid = true;
            desc.attrs[0].name = "v_pos";
            desc.attrs[1].name = "v_uv";
            desc.attrs[2].name = "v_palette";
            desc.vs.source = (const char*)palette_vs_source_glsl410;
            desc.vs.entry = "main";
            desc.vs.uniform_blocks[0].size = 64;
            desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.vs.uniform_blocks[0].uniforms[0].name = "vs_params";
            desc.vs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4;
            desc.vs.uniform_blocks[0].uniforms[0].array_count = 4;
            desc.fs.source = (const char*)palette_fs_source_glsl410;
            desc.fs.entry = "main";
            desc.fs.images[0].used = true;
            desc.fs.images[0].multisampled = false;
            desc.fs.images[0].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.images[1].used = true;
            desc.fs.images[1].multisampled = false;
            desc.fs.images[1].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[1].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.samplers[0].used = true;
            desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.samplers[1].used = true;
            desc.fs.samplers[1].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.image_sampler_pairs[0].used = true;
            desc.fs.image_sampler_pairs[0].image_slot = 0;
            desc.fs.image_sampler_pairs[0].sampler_slot = 0;
            desc.fs.image_sampler_pairs[0].glsl_name = "uTexture_uTextureS";
            desc.fs.image_sampler_pairs[1].used = true;
            desc.fs.image_sampler_pairs[1].image_slot = 1;
            desc.fs.image_sampler_pairs[1].sampler_slot = 1;
            desc.fs.image_sampler_pairs[1].glsl_name = "uPalette_uPaletteS";
            desc.label = "palette_shader";
        }
        return &desc;
    }
    if (backend == SG_BACKEND_D3D11) {
        static sg_shader_desc desc;
        static bool valid;
        if (!valid) {
            valid = true;
            desc.attrs[0].sem_name = "TEXCOORD";
            desc.attrs[0].sem_index = 0;
            desc.attrs[1].sem_name = "TEXCOORD";
            desc.attrs[1].sem_index = 1;
            desc.attrs[2].sem_name = "TEXCOORD";
            desc.attrs[2].sem_index = 2;
            desc.vs.bytecode.ptr = palette_vs_bytecode_hlsl4;
            desc.vs.bytecode.size = 844;
            desc.vs.entry = "main";
            desc.vs.uniform_blocks[0].size = 64;
            desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
            desc.fs.bytecode.ptr = palette_fs_bytecode_hlsl4;
            desc.fs.bytecode.size = 800;
            desc.fs.entry = "main";
            desc.fs.images[0].used = true;
            desc.fs.images[0].multisampled = false;
            desc.fs.images[0].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.images[1].used = true;
            desc.fs.images[1].multisampled = false;
            desc.fs.images[1].image_type = SG_IMAGETYPE_2D;
            desc.fs.images[1].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
            desc.fs.samplers[0].used = true;
            desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.samplers[1].used = true;
            desc.fs.samplers[1].sampler_type = SG_SAMPLERTYPE_FILTERING;
            desc.fs.image_sampler_pairs[0].used = true;
            desc.fs.image_sampler_pairs[0].image_slot = 0;
            desc.fs.image_sampler_pairs[0].sampler_slot = 0;
            desc.fs.image_sampler_pairs[1].used = true;
            desc.fs.image_sampler_pairs[1].image_slot = 1;
            desc.fs.image_sampler_pairs[1].sampler_slot = 1;
            desc.label = "palette_shader";
        }
        return &desc;
    }
    return 0;
}
